package com.hj.dapp.business.budget.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hj.dapp.business.budget.model.Budget;
import com.hj.dapp.business.budget.model.BudgetExportVO;
import com.hj.dapp.business.budget.model.BudgetProject;
import com.hj.dapp.business.budget.vo.BudgetBindListVO;
import com.hj.dapp.business.budget.vo.BudgetPageVO;
import com.hj.dapp.business.budget.vo.BudgetProjectSave;
import com.hj.dapp.business.budget.vo.BudgetSaveVO;
import com.hj.dapp.business.craft.model.Craft;
import com.hj.dapp.business.project.model.Project;
import com.hj.dapp.common.request.PageRequest;

import javax.servlet.ServletOutputStream;
import java.math.BigDecimal;
import java.security.Principal;
import java.util.List;

/**
 * @author 胡奥程
 * @version 1.0
 * @date 2024/1/19
 */
public interface BudgetService {
    void exportLightAuxiliary(Long customerId, Long engineerProjectId, ServletOutputStream outputStream);

    void save(BudgetSaveVO budgetSaveVO);

    IPage<BudgetPageVO> page(PageRequest<Budget> pageRequest, Principal principal);

    List<Craft> listBindCrafts(BudgetBindListVO budget);

    void saveProjects(BudgetProjectSave budgetProjectSave);

    List<BudgetProject> getBudgetProjects(Long budgetId);

    BudgetExportVO list(Long customerId, Long engineerProjectId);

    BudgetExportVO getProjects(Long customerId, Long engineerProjectId);

    void saveBatch(List<BudgetSaveVO> budgetSaveVOList);

    BigDecimal getDiscountPrice(Long customerId, Long engineerProjectId);
}
